#ifndef __AB4CB0C2_0E67_4615_B663_04E6B5057834__
#define __AB4CB0C2_0E67_4615_B663_04E6B5057834__

/////////////////////////////////////////////////////////////////////////////////////////
// 
namespace xos
{
    // 
    // dynamic interface
    // 
    class i_dynamic
    {
    public:
        virtual ~i_dynamic(){}

    public:
        // 
        // use different ext whith different platform. win is dll, linux is so, mac is dylib
        // 
        virtual int load( const char * lpszFile ) = 0;

        // 
        // get proc address by name
        // 
        virtual void * get_proc_by_name( const char * lpszProcName ) = 0;

        // 
        // free loaded module
        //
        virtual int free() = 0;

        // 
        // release
        // 
        virtual int release() = 0;
    };
}

#endif // __AB4CB0C2_0E67_4615_B663_04E6B5057834__
